package com.zqcy.workbench.widget;

import android.content.Context;
import android.content.res.TypedArray;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.annotation.ColorInt;

import com.zqcy.workbench.R;
import com.zqcy.workbench.utils.Utils;

/**
 * TagTextView
 * Created by chenxb on 2018/11/19.
 */
public class FontIconTextView extends LinearLayout {

    private FontIcon fontIcon;
    private TextView textView;
    private ImageView dotView;
    private TextView dotText;

    private String mIconText;
    private int mIconColor;
    private float mIconSize;

    private String mStrText;
    private int mStrTextColor;
    private float mStrTextSize;

    public FontIconTextView(Context context) {
        this(context, null);
    }

    public FontIconTextView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public FontIconTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        View view = LayoutInflater.from(context).inflate(R.layout.layout_fonticon_textview, this);
        fontIcon = view.findViewById(R.id.font_icon);
        textView = view.findViewById(R.id.text_view);
        dotView = view.findViewById(R.id.red_dot);
        dotText = view.findViewById(R.id.dot_tv);
        TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.FontIconTextView);
        mIconText = array.getString(R.styleable.FontIconTextView_iconText);
        mIconColor = array.getColor(R.styleable.FontIconTextView_iconTextColor, getResources().getColor(R.color.c_gray5));
        mIconSize = array.getDimension(R.styleable.FontIconTextView_iconTextSize, Utils.sp2px(context, 16));
        mStrText = array.getString(R.styleable.FontIconTextView_strText);
        mStrTextColor = array.getColor(R.styleable.FontIconTextView_strTextColor, getResources().getColor(R.color.c_gray5));
        mStrTextSize = array.getDimension(R.styleable.FontIconTextView_strTextSize, Utils.sp2px(context, 10));
        initView();
    }

    private void initView() {
        fontIcon.setTextColor(mIconColor);
        fontIcon.setTextSize(TypedValue.COMPLEX_UNIT_PX, mIconSize);

        textView.setTextColor(mStrTextColor);
        textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mStrTextSize);

        if (TextUtils.isEmpty(mIconText)) {
            fontIcon.setVisibility(View.GONE);
        } else {
            fontIcon.setVisibility(View.VISIBLE);
            fontIcon.setText(mIconText);
        }

        if (TextUtils.isEmpty(mStrText)) {
            textView.setVisibility(View.GONE);
        } else {
            textView.setVisibility(View.VISIBLE);
            textView.setText(mStrText);
        }
    }

    public void setIconAndText(int icon, String text) {
        fontIcon.setVisibility(View.VISIBLE);
        fontIcon.setText(icon);
        textView.setVisibility(View.VISIBLE);
        textView.setText(text);
    }

    public void setText(String text) {
        if (TextUtils.isEmpty(text)) {
            return;
        }
        textView.setVisibility(View.VISIBLE);
        textView.setText(text);
    }

    public String getText() {
        return textView.getText().toString();
    }


    public void setIconTextColor(@ColorInt int color) {
        fontIcon.setTextColor(color);
        textView.setTextColor(color);
    }

    public void showDot(boolean show) {
        dotText.setVisibility(View.GONE);
        dotView.setVisibility(show ? View.VISIBLE : View.GONE);
    }

    public boolean isShowDot() {
        return dotView.isShown();
    }

    public void showNum(int num) {
        dotView.setVisibility(View.GONE);
        if (num > 0) {
            dotText.setVisibility(View.VISIBLE);
            String sizeStr = "99+";
            if (num < 99) {
                sizeStr = String.valueOf(num);
            }
            dotText.setText(sizeStr);
        } else {
            dotText.setVisibility(View.GONE);
        }
    }

    public boolean isShowNum() {
        return dotText.isShown();
    }
}
